export default function(cls) {
  var defaultOptions = {
    'positions': [],
    'height': 0x0,
    'show': !![],
    'baseWaterColor': [0.2, 0.3, 0.6, 1.0],
    'blendColor': [0.5, 0.5, 0.5, 0.7],
    'frequency': 0x1388,
    'animationSpeed': 0.05,
    'amplitude': 2,
    'specularIntensity': 0.5,
    'fadeFactor': 0x1,
    'velocity': [0xa, 0xa],
    'showHelper': ![],
    'outline': {
      'show': !![],
      'color': [0x0, 0x1, 0x0, 0x1],
      'width': 0x2
    },
    'ground': ![]
  };

  cls.defaultOptions = {
    positions: [],
    height: 0.0,
    show: true,
    baseWaterColor: [0.2, 0.3, 0.6, 1.0],
    blendColor: [0.5, 0.5, 0.5, 0.5],
    frequency: 5000.0,
    animationSpeed: 0.05,
    amplitude: 5.0,
    specularIntensity: 2,
    fadeFactor: 1.0,
    velocity: [-100.0, 75.0], //流速
    showHelper: true,
    outline: {
      show: true,
      color: [0, 1, 0, 1],
      width: 1.0
    },
    ground: false
  };

  cls.schema = {
    title: "Water Property",
    type: "object",
    properties: {
      /**
       * 位置数组，形式如 [[2.012, 0.65, 10], [1.9, 0.7, 20], ...] 每一个元素分别表示 经度、纬度、高度，其中经度纬度以弧度为单位，高度以米为单位
       * @type {array}
       * @instance
       * @default true
       * @memberof Obj.Water
       */
      positions: {
        type: 'array',
        title: '位置数组',
        default: [],
        description: '位置数组'
      },
      /**
       * 水面高度
       * @type {number}
       * @instance
       * @default 0.0
       * @memberof Obj.Water
       */
      height: {
        type: 'number',
        title: '水面高度',
        default: 0.0,
        description: '水面高度'
      },
      /**
       * 是否在三维窗口中显示
       * @type {boolean}
       * @instance
       * @default true
       * @memberof Obj.Water
       */
      show: {
        type: 'boolean',
        title: '是否在三维窗口中显示',
        default: true,
        description: '是否在三维窗口中显示'
      },
      /**
       * 基本颜色叠加
       * @type {number[]}
       * @instance
       * @default [0.2, 0.3, 0.6, 1.0]
       * @memberof Obj.Water
       */
      baseWaterColor: {
        type: 'array',
        items: {
          type: 'number'
        },
        minItems: 4,
        maxItems: 4,
        default: [0.2, 0.3, 0.6, 1.0],
        description: '颜色叠加'
      },
      /**
       * 混合颜色叠加
       * @type {number[]}
       * @instance
       * @default [0.5, 0.5, 0.5, 0.7]
       * @memberof Obj.Water
       */
      blendColor: {
        type: 'array',
        items: {
          type: 'number'
        },
        minItems: 4,
        maxItems: 4,
        default: [0.5, 0.5, 0.5, 0.7],
        description: '颜色叠加'
      },
      /**
       * 频率
       * @type {number}
       * @instance
       * @default 5000.0
       * @memberof Obj.Water
       */
      frequency: {
        type: 'number',
        title: '频率',
        default: 5000.0,
        description: '频率'
      },
      /**
       * 运动速度
       * @type {number}
       * @instance
       * @default 0.05
       * @memberof Obj.Water
       */
      animationSpeed: {
        type: 'number',
        title: '运动速度',
        default: 0.05,
        description: '运动速度'
      },
      /**
       * amplitude
       * @type {number}
       * @instance
       * @default 2.0
       * @memberof Obj.Water
       */
      amplitude: {
        type: 'number',
        title: 'amplitude',
        default: 2.0,
        description: 'amplitude'
      },
      /**
       * specularIntensity
       * @type {number}
       * @instance
       * @default 0.5
       * @memberof Obj.Water
       */
      specularIntensity: {
        type: 'number',
        title: 'specularIntensity',
        default: 0.5,
        description: 'specularIntensity'
      },
      /**
       * fadeFactor
       * @type {number}
       * @instance
       * @default 1.0
       * @memberof Obj.Water
       */
      fadeFactor: {
        type: 'number',
        title: 'fadeFactor',
        default: 1.0,
        description: 'fadeFactor'
      },
      /**
       * 速度数组，有两个元素，分别表示东西向、南北向，分别以东和北作为正向
       * @type {number[]}
       * @instance
       * @default [10.0, 10.0]
       * @memberof Obj.Water
       */
      velocity: {
        type: 'array',
        items: {
          type: 'number'
        },
        minItems: 2,
        maxItems: 2,
        default: [10.0, 10.0],
        description: '速度数组'
      },
      /**
       * 是否显示辅助线框
       * @type {boolean}
       * @instance
       * @default false
       * @memberof Obj.Water
       */
      showHelper: {
        type: "boolean",
        title: "辅助线框",
        default: "false",
        description: '辅助线框'
      },
      /**
       * 外轮廓线
       * @type {object}
       * @property {string} show -  外轮廓线是否可见，默认为true
       * @property {Obj.Water.Material.Color} color - 外轮廓线颜色，默认为[0, 1, 0, 1]
       * @property {Obj.Water.Material.WaterDash} width - 外轮廓线宽度，默认为2.0
       * @instance
       * @memberof Obj.Water
       */
      outline: {}, // TODO(vtxf)
      /**
       * 是否贴地
       * @type {boolean}
       * @instance
       * @default true
       * @memberof Obj.Water
       */
      ground: {
        type: 'boolean',
        title: '是否贴地',
        default: true,
        description: '是否贴地'
      }
    }
  };

  cls.classification = [{
    name: {
      chinese: '通用',
      english: 'General'
    },
    properties: ['positions', 'height', 'show', 'baseWaterColor', 'blendColor', 'frequency', 'animationSpeed',
      'amplitude', 'specularIntensity', 'fadeFactor', 'velocity', 'showHelper', 'outline', 'ground'
    ]
  }];

  // _XbsjObject2.default.registerType(Water, 'Water');
}
